ass Solution {
public:
    int evalRPN(vector<string>& tokens) 
    {
        // 我们这里使用栈去解决这个问题
        // 中间还需要用到哈希表来映射
        // 另外还使用到了 C++11的包装器和lambda表达式 
        stack<int> ans;
        unordered_map<string , function<int(int , int)>> solmap;
        solmap["+"] = [](int x , int y)->int{return x + y;};
        solmap["-"] = [](int x , int y)->int{return x - y;};
        solmap["*"] = [](int x , int y)->int{return x * y;};
        solmap["/"] = [](int x , int y)->int{return x / y;};

        for (auto x : tokens)
        {
            auto it = solmap.find(x);

            if (it == solmap.end())
            {
                ans.push(stoi(x));
                // stoi(x);
            }
            else
            {
                int right = ans.top();
                ans.pop();

                int left = ans.top();
                ans.pop();

                auto e = solmap[x](left,right);
                ans.push(e);
            }
        }

        return ans.top();
    }
};
